package cn.com.huzo.repository.tech;

import cn.com.huzo.model.entities.tech.ProductBomLinesColourSchemaEntity;
import huzofw.repository.GenericRepository;
import java.util.List;

/**
 * EBOM-配色方案数据访问对象接口。
 *
 * @author 吴旭
 */
public interface ProductBomLinesColourSchemaRepository extends GenericRepository<ProductBomLinesColourSchemaEntity, String> {

    /**
     * 根据给定的EBOM标识，得到成品色明细数据列表
     * <p>
     * @param headerId EBOMID
     * @return EBOM明细数据列表
     */
    List<ProductBomLinesColourSchemaEntity> fetchByHeaderId(Long headerId);

    /**
     * 粘贴时，也同时引入相应的配色方案
     *
     * @param headerId EBOMID
     * @param copiedLinesId 要拷贝的明细ID
     * @return
     */
    Integer insertLinesFromClipboard(Long headerId, String copiedLinesId);

    /**
     * 引入其他EBOM时，也同时引入相应的配色方案
     *
     * @param headerId EBOMID
     * @param importedBomHeaderId 要引入的EBOMID
     * @return
     */
    Integer importLinesFromOtherBom(Long headerId, Long importedBomHeaderId);

    /**
     * 引入配色方案后，需要更新对应关系为当前EBOM明细
     *
     * @param headerId 当前EBOMID
     * @return
     */
    Integer updateParentLinesIdForImportedLines(Long headerId);

    /**
     * 批量更改材料色。
     * <p>
     * @param headerId EBOM表标识
     * @param bomLinesId EBOM表明细标识
     * @param materialColourName 要更改的材料色
     * @param productColourId 对应的产品色
     * @return
     */
    Integer changeMaterialColour(Long headerId, String bomLinesId, String materialColourName, Long productColourId);

    /**
     * 根据EBOM明细标识删除
     *
     * @param parentLinesId EBOM明细标识
     * @return 影响的行数
     */
    Integer deleteByParentLinesId(String parentLinesId);
}
